/***
1. 這個檔案主要是用來處裡VM移動，在這邊我們是利用drag的方式來達到animation的效果，
   主要會用在除了OIS input 以外的VM移動，像是VM發生碰撞了我們必須去移動它，這時候VM就會利用這邊的函式來達到移動
2. Singleton
3. 函式的觸發是寫framStart中，以達到animation的效果
***/

#ifndef _DragVMToDestination_H_
#define _DragVMToDestination_H_

#include "DIVA_VM.h"
//using namespace Ogre;
using namespace std ;
typedef struct move_str {
	DIVA_VM* vm;
	Ogre::Vector3 end ;
	Ogre::Vector3 step ;
	int count;
} MOVE_STR ;

class DragVMToDestination{
	private:	
		static DragVMToDestination* DragVM;
		DragVMToDestination();

		std::vector<move_str*> record_information;
	public:
		/// destructor
		~DragVMToDestination();

		/// singleton method
		static DragVMToDestination* getInstance();
		void addNeedMoveVM(DIVA_VM*,Ogre::Vector3);
		///在framStart 以及 frameEnd 中間一直被呼叫去看有沒有VM需要被排的
		void move();
		bool move_finish(DIVA_VM*);
};


#endif 